部署网关Pod到指定的节点

配置高性能和高可用的ASM网关,可以确保业务连续性并提升使用体验。本文介绍如何配置ASM网关,将网关Pod部署到指定节点,从而提高ASM网关的高可用性并增强与业务Pod的隔离性。

前提条件

相关概念

概念

说明

污点(Taint)

作用于节点上,使节点可以排斥一类特定的Pod。

容忍度(Toleration)

作用于Pod上,允许调度器将该Pod调度到带有对应污点的节点上。

说明

污点和容忍度相互配合,可用于避免Pod被分配到不合适的节点上。每个节点都可以应用一个或多个污点。

  • 若Pod不能容忍指定的污点,将不会被节点接受,即Pod不能调度到具有匹配污点的节点上。

  • 若Pod可以容忍指定的污点,表示Pod可以(但不要求)被调度到具有匹配污点的节点上。

节点亲和性(nodeAffinity)

定义Pod调度时的软需求或者偏好,且在这种偏好不被满足时成功调度该Pod到其他节点。

步骤一:添加标签至节点

  1. 执行以下命令,获取集群的节点名称。

    kubectl get nodes
  2. 执行以下命令,将标签添加到目标节点。

    # 命令格式。
    kubectl label nodes <node-name> <label-key>=<label-value>
    
    # 命令示例。
    kubectl label nodes node1 mykey4pod=asmgateway

步骤二:添加污点至节点

执行以下命令,为节点增加一个污点。

kubectl taint nodes node1 mykey=myvalue:NoSchedule

该命令表示为节点node1增加一个污点。其中,Key是mykey,Value是myvalue,Effect是NoSchedule,表示只有拥有和这个污点相匹配的容忍度的Pod才能够被分配到node1节点。

步骤三:为ASM网关设置节点亲和性和容忍度

在ASM网关中配置nodeAffinity参数,使ASM网关的Pod分布到指定的节点上;配置tolerations参数与步骤二创建的污点相匹配,使网关的Pod能够被分配到指定的节点上。

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择ASM网关 > 入口网关

  3. 入口网关页面右侧,单击目标网关对应的查看YAML

  4. 编辑对话框的spec字段下,增加如下内容,然后单击确定

      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: mykey4pod
                operator: In
                values:
                - asmgateway
      tolerations:
      - key: "mykey"
        operator: "Equal"
        value: "myvalue"
        effect: "NoSchedule"
  5. 查看网关的Pod所在的节点是否符合预期。

    1. 登录容器服务管理控制台,在左侧导航栏选择集群

    2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择工作负载 > 容器组

    3. 容器组页面上方,选择istio-system命名空间,查看网关Pod所在的节点是否符合预期。

      若网关Pod所在的节点为目标节点,表明为ASM网关设置节点亲和性和容忍度成功。